/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package familytree.persistencia.dao.hibernate;

import familytree.persistencia.dao.ParejaDAO;
import familytree.persistencia.pojos.Nodo;
import familytree.persistencia.pojos.Pareja;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Jose Antonio
 */
public class HibernateParejaDAO extends HibernateGenericDAO<Pareja, String>
        implements ParejaDAO {

    public void makeTransient(String idPareja) {
        Pareja p = super.findById(idPareja, false);
        super.makeTransient(p);
    }
/*
    public Pareja getParejaPorIdPareja(String idPareja) {

        //Se abre la transacción
        try {
            return (super.findById(idPareja, false));
        } catch (HibernateException e) {
        }
        return null;

    }*/
    public Pareja getParejaPorIdPareja(String idPareja) {
       List<Pareja> parejas = new ArrayList<Pareja>();
       Criterion criterion = Restrictions.eq("idPareja", idPareja);
       parejas = findByCriteria(criterion);
       return parejas.get(0);
            
    }
    
    public Pareja getYaCreadaConComponente1Null(Nodo nodo){
        Transaction tx = getSession().beginTransaction();
         List<Pareja> lista = null;
            try{
              Criterion criterion = Restrictions.eq("componente2",nodo);
              Criterion criterion2 = Restrictions.isNull("componente1");
              lista = findByCriteria(criterion,criterion2);
              tx.commit();
             
            }
             catch(HibernateException e){
                tx.rollback();
            }
            if (lista == null)
                return null;
            else{
              return lista.get(0);
            }
    }

    
    public Pareja getYaCreadaConComponente2Null(Nodo nodo){
        Transaction tx = getSession().beginTransaction();
         List<Pareja> lista = null;
            try{
              Criterion criterion = Restrictions.eq("componente1",nodo);
              Criterion criterion2 = Restrictions.isNull("componente2");
              lista = findByCriteria(criterion,criterion2);
              tx.commit();
             
            }
             catch(HibernateException e){
                tx.rollback();
            }
            if (lista == null)
                return null;
            else{
              return lista.get(0);
            }
    }
}